#ifndef __Base_I2C_H
#define __Base_I2C_H

#ifdef __cplusplus
extern "C" {
#endif

#include "stm32f1xx_hal.h"

/**
 * @brief 通过 I2C 接口写入命令数据
 * @param hi2cx: 指向 I2C 句柄的指针，用于指定使用的 I2C 总线实例
 * @param adr: 目标设备的 I2C 地址，标识要与之通信的从设备
 * @param TxData: 指向待发送数据的指针，包含了要写入 I2C 设备的命令或数据内容
 * @param len: 要发送数据的长度，即 TxData 中数据的字节数
 * @param timeout: 操作超时时间，若在该时间内操作未完成，则操作失败，单位取决于具体实现
 * @retval HAL_StatusTypeDef: 操作状态，如 HAL_OK 表示成功，其他值表示失败
 */
HAL_StatusTypeDef Base_I2C_WriteCmd(uint8_t* hi2cx, uint16_t Adr, uint8_t* TxData, uint8_t Len, uint16_t Timeout);

/**
 * @brief 通过 I2C 接口读取命令响应数据
 * @param hi2cx: 指向 I2C 句柄的指针，用于指定使用的 I2C 总线实例
 * @param adr: 目标设备的 I2C 地址，标识要与之通信的从设备
 * @param RxData: 指向用于存储接收到数据的缓冲区的指针，读取到的数据会存于此
 * @param len: 要读取数据的长度，即期望从 I2C 设备读取的字节数
 * @param timeout: 操作超时时间，若在该时间内操作未完成，则操作失败，单位取决于具体实现
 * @retval HAL_StatusTypeDef: 操作状态，如 HAL_OK 表示成功，其他值表示失败
 */
HAL_StatusTypeDef Base_I2C_ReadCmd(uint8_t* hi2cx, uint16_t Adr, uint8_t* RxData, uint8_t Len, uint16_t Timeout);

#ifdef __cplusplus
}
#endif

#endif /* __Base_I2C_H */
//作者：韩林杏
